async-tungstenite
Asynchronous WebSockets for async-std,
tokio, gio and any std
Future
s runtime.
Usage
Add this in your Cargo.toml
:
[]
= "*"
Take a look at the examples/
directory for client and server examples. You
may also want to get familiar with async-std or
tokio if you don't have any experience with it.
What is async-tungstenite?
This crate is based on tungstenite
Rust WebSocket library and provides async bindings and wrappers for it, so you
can use it with non-blocking/asynchronous TcpStream
s from and couple it
together with other crates from the async stack. In addition, optional
integration with various other crates can be enabled via feature flags
async-tls
: Enables theasync_tls
module, which provides integration with the async-tls TLS stack and can be used independent of any async runtime.async-std-runtime
: Enables theasync_std
module, which provides integration with the async-std runtime.async-native-tls
: Enables the additional functions in theasync_std
module to implement TLS via async-native-tls.tokio-runtime
: Enables thetokio
module, which provides integration with the tokio runtime.tokio-native-tls
: Enables the additional functions in thetokio
module to implement TLS via tokio-native-tls.tokio-rustls-native-certs
: Enables the additional functions in thetokio
module to implement TLS via tokio-rustls and uses native system certificates found with rustls-native-certs.tokio-rustls-webpki-roots
: Enables the additional functions in thetokio
module to implement TLS via tokio-rustls and uses the certificates webpki-roots provides.gio-runtime
: Enables thegio
module, which provides integration with the gio runtime.
Messages vs Streaming
WebSocket provides a message-oriented protocol, and this crate supports sending
and receiving data in messages; protocols built on WebSocket are allowed to
make message boundaries semantically significant. However, some users of
WebSocket may want to treat the socket as a continuous stream of bytes. If you
know the sending end does not place significance on message boundaries, and you
want to process a stream of bytes without regard to those boundaries, try
ws_stream_tungstenite
,
which builds upon this crate.
tokio-tungstenite
Originally this crate was created as a fork of
tokio-tungstenite and ported
to the traits of the futures
crate.
Integration into async-std, tokio and gio was added on top of that.